<template>
	<view class="container">
		<view class="scan-area">
			<text class="tip">扫码页面</text>
			<button @click="startScan">开始扫码</button>
			<button @click="goBack">返回</button>
			
			<view class="result" v-if="scanResult">
				<text class="result-title">扫码结果：</text>
				<text class="result-content">{{ scanResult }}</text>
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				scanResult: '',
				// 使用电脑连接WiFi/热点后的实际IP地址
				// 如果连接手机热点，使用 WLAN 适配器的IP：192.168.55.17
				// 如果连接普通WiFi，使用 WLAN 适配器的IP：192.168.3.146
				baseUrl: 'http://192.168.55.17:8080'
			}
		},
		methods: {
			startScan() {
				uni.scanCode({
					success: (res) => {
						console.log('扫码结果:', res)
						this.scanResult = res.result
						
						// 发送扫码结果到后端
						this.sendScanResultToBackend(res.result)
					},
					fail: (err) => {
						console.error('扫码失败:', err)
						uni.showToast({
							title: '扫码失败',
							icon: 'none'
						})
					}
				})
			},
			
			// 发送扫码结果到后端
			sendScanResultToBackend(scanData) {
				// 解析扫码结果，格式：教室id:1,桌位id:1
				let roomId = null
				let tableId = null
				
				try {
					// 使用正则表达式提取教室id和桌位id
					const roomMatch = scanData.match(/教室id:(\d+)/)
					const tableMatch = scanData.match(/桌位id:(\d+)/)
					
					if (roomMatch) {
						roomId = parseInt(roomMatch[1])
					}
					if (tableMatch) {
						tableId = parseInt(tableMatch[1])
					}
					
					console.log('解析结果 - 教室ID:', roomId, '桌位ID:', tableId)
				} catch (e) {
					console.error('解析扫码结果失败:', e)
				}
				
				uni.showLoading({
					title: '正在提交...'
				})
				
				uni.request({
					url: `${this.baseUrl}/my/sign/scanResult`,
					method: 'POST',
					header: {
						'Content-Type': 'application/json'
						// 如果需要token认证，在这里添加
						// 'Authorization': 'Bearer ' + uni.getStorageSync('token')
					},
					data: {
						roomId: roomId,
						tableId: tableId,
						signTime: new Date(),
						// 可以添加其他需要的字段
						// studentId: uni.getStorageSync('studentId'),
						// lessonId: uni.getStorageSync('lessonId'),
						// teacherId: uni.getStorageSync('teacherId')
					},
					success: (res) => {
						console.log('后端响应:', res)
						uni.hideLoading()
						
						if (res.statusCode === 200 && res.data.code === 200) {
							uni.showModal({
								title: '扫码成功',
								content: `扫码结果：${scanData}\n已成功提交到服务器`,
								showCancel: false
							})
						} else {
							uni.showModal({
								title: '提交失败',
								content: res.data.msg || '服务器返回异常',
								showCancel: false
							})
						}
					},
					fail: (err) => {
						console.error('请求失败:', err)
						uni.hideLoading()
						uni.showModal({
							title: '网络错误',
							content: '无法连接到服务器，请检查网络设置',
							showCancel: false
						})
					}
				})
			},
			
			goBack() {
				uni.navigateBack()
			}
		}
	}
</script>

<style>
	.container {
		padding: 40rpx;
	}
	
	.scan-area {
		display: flex;
		flex-direction: column;
		align-items: center;
	}
	
	.tip {
		font-size: 36rpx;
		margin-bottom: 40rpx;
	}
	
	button {
		width: 80%;
		margin: 20rpx 0;
	}
	
	.result {
		margin-top: 40rpx;
		padding: 30rpx;
		background: #f5f5f5;
		border-radius: 10rpx;
		width: 100%;
	}
	
	.result-title {
		font-size: 28rpx;
		color: #666;
	}
	
	.result-content {
		font-size: 32rpx;
		color: #333;
		word-break: break-all;
	}
</style>